#ifndef ARBOLRITTER_H
#define ARBOLRITTER_H

#include <iostream>
#include <vector>
#include <map>
#include <math.h>
#include "Vertice.h"
#include "Nodo.h"
#include "Triangulo.h"
#include "colisionTriangulos.h"

#define debug false

using namespace std;

class ArbolRitter {
    
private:
    Nodo *raiz;
    Triangulo frs;
    map <Vertice,const Triangulo *> mapa;    
    double calcDist(Vertice a, Vertice b);     
    void dividirVector(const int &p, const int &q, vector <Vertice> v, vector <Vertice> &v1, vector <Vertice> &v2);
   
    void cargarArbol(vector <Vertice> &e, Nodo *n);
        
public:
    ArbolRitter();
    void Inicializar(const vector<Triangulo> &p);
    Vertice calcularPromedioPunto(Triangulo t);
    ArbolRitter(const ArbolRitter &a);
    Nodo getRaiz(){ return *raiz; }
    map<Vertice,const Triangulo *> getMapa(){ return mapa; }
    bool hayColision(Triangulo tr);
    bool hayInterseccion(Triangulo t1, Triangulo t2);
    Triangulo& getTrianguloCol(){return frs;}
};

#endif
